package com.guigu.www.Interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.security.auth.login.LoginContext;
import javax.servlet.http.HttpSession;

/*用户登录的拦截器*/
public class LoingInterceptor implements HandlerInterceptor {
    /*Controller执行前调用此方法
    * 返回true表示继续执行,返回false终止执行
    * 这里可以加入登陆校验*/
    @Override
    public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        /*获取当前请求的URL*/
        String requestURI = request.getRequestURI();
        //说明用户需要登录,应该放行
        if(requestURI.contains("login")){
            return true;
        }
//        if(requestURI.contains("queryAll")){
//            return true;
//        }
//        if(requestURI.contains("css")){
//            return true;
//        }
//        if(requestURI.contains("xm")){
//            return true;
//        }
        //如果session不为空,说明用户已经登录,也应该放行
        if(session.getAttribute("login")!=null){
            return true;
        }
        //重定向到登录界面
        response.sendRedirect("/login.jsp");
        return false;
    }
    /*Controller执行后但未返回视图层前调用此方法
     * 这里可以返回用户前对模型数据进行加工
     * 比如这里加入公用信息以便页面显示*/
    @Override
    public void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }
    /*Controller执行后且视图返回后调用此方法
     * 这里可得到执行Controller时的异常信息
     * 这里可记录操作日志*/
    @Override
    public void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}
